home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The CICA Windows Explosion!
/
The CICA Windows Explosion! - Disc 2.iso
/
programr
/
tkern10.zip
/
GNUISH\XMALLOC.ASM
< prev
next >
Wrap
Assembly Source File
|
1994-07-16
|
3KB
|
135 lines
.286p
ifndef ??version
?debug macro
endm
publicdll macro name
public name
endm
$comm macro name,dist,size,count
comm dist name:BYTE:count*size
endm
else
$comm macro name,dist,size,count
comm dist name[size]:BYTE:count
endm
endif
?debug V 301h
?debug S "xmalloc.c"
?debug C E95CAA331509786D616C6C6F632E63
?debug C E90020821B17433A5C4243345C494E434C5544455C7374646C6962+
?debug C 2E68
?debug C E90020821B16433A5C4243345C494E434C5544455C5F646566732E+
?debug C 68
?debug C E90020821B16433A5C4243345C494E434C5544455C5F6E756C6C2E+
?debug C 68
?debug C E958AA33150A2E5C676E756C69622E68
XMALLOC_TEXT segment word public 'CODE'
XMALLOC_TEXT ends
DGROUP group _DATA,_BSS
assume cs:XMALLOC_TEXT,ds:DGROUP
_DATA segment word public 'DATA'
d@ label byte
d@w label word
_DATA ends
_BSS segment word public 'BSS'
b@ label byte
b@w label word
_BSS ends
XMALLOC_TEXT segment word public 'CODE'
?debug C E80109786D616C6C6F632E635CAA3315
;
; xmalloc (size_t bytes)
;
?debug L 27
assume cs:XMALLOC_TEXT,ds:DGROUP
_xmalloc proc far
?debug B
mov ax,ds
nop
inc bp
push bp
mov bp,sp
push ds
mov ds,ax
sub sp,4
?debug C E60562797465730A0A06000000
?debug B
;
; {
; void *ptr = (void *) malloc (bytes);
;
?debug L 29
push word ptr [bp+6]
call far ptr _malloc
pop cx
mov word ptr [bp-4],dx
mov word ptr [bp-6],ax
;
;
; if (ptr == NULL)
;
?debug L 31
mov ax,word ptr [bp-6]
or ax,word ptr [bp-4]
jne short @1@86
;
; error (2, 0, "Out of memory!");
;
?debug L 32
push ds
push offset DGROUP:s@
push 0
push 2
call far ptr _error
add sp,8
@1@86:
;
;
; return ptr;
;
?debug L 34
mov dx,word ptr [bp-4]
mov ax,word ptr [bp-6]
jmp short @1@114
@1@114:
;
; }
;
?debug L 35
pop cx
pop cx
pop ds
pop bp
dec bp
ret
?debug C E318000400160100
?debug C E6037074721802FAFF00000562797465730A0A06+
?debug C 000000
?debug E
?debug E
_xmalloc endp
?debug C E9
?debug C FA00000000
XMALLOC_TEXT ends
_DATA segment word public 'DATA'
s@ label byte
db 'Out of memory!'
db 0
_DATA ends
XMALLOC_TEXT segment word public 'CODE'
XMALLOC_TEXT ends
_s@ equ s@
extrn _malloc:far
public _xmalloc
extrn _error:far
?debug C EA010C
?debug C E31900000023180400
?debug C EB075F6D616C6C6F63190000
?debug C E31A00000023180400
?debug C EC085F786D616C6C6F631A180000
?debug C E31B00000023010401
?debug C EB065F6572726F721B0000
?debug C E60673697A655F740A0600000777636861725F74+
?debug C 0A060000
end